home *** CD-ROM | disk | FTP | other *** search
- OPT DOSONLY
-
- MODULE 'socket','socket/netdb','sys/socket','netinet/in'
- MODULE 'dos/dos'
-
- DEF SocketBase
-
- DEF sockfd
- DEF myaddr:sockaddr_in
- DEF he:PTR TO hostent
- DEF buffer[2048]:BYTE,i,x
- DEF hostname[128]:UBYTE,path[256]:UBYTE
-
- DEF args:PTR TO LONG,rdargs
-
- PROC main()
-
- IFN (SocketBase := OpenLibrary('bsdsocket.library',0)) THEN Raise("SOCK")
-
- args := [0]:LONG
-
- IF rdargs := ReadArgs('HTTPADDRESS/A',args,NIL)
- StrCopy(buffer,args[0])
-
-
- i := 0
- x := 0
- WHILE ((buffer[i]<>"/") && (buffer[i]<>0))
- hostname[x] := buffer[i]
- i++
- x++
- ENDWHILE
- hostname[x] := 0
- i++
- IF (buffer[i])
- x := 0
- WHILE (buffer[i])
- path[x] := buffer[i]
- x++
- i++
- ENDWHILE
- path[x] := 0
- ENDIF
-
- IF ((sockfd:= socket(AF_INET, SOCK_STREAM,0)) <> -1)
-
- he := gethostbyname(hostname)
-
- myaddr.sin_family := AF_INET
- myaddr.sin_port := 80
- myaddr.sin_addr.s_addr := inet_addr(inet_ntoa(^he.h_addr_list[0]))
-
- connect(sockfd, &myaddr, SIZEOF_sockaddr)
-
- StringF(buffer,'GET /\s HTTP/1.1\nHost: \s\n\n',path,hostname)
-
- send(sockfd,buffer,StrLen(buffer),0)
-
- WHILE ((i := recv(sockfd,buffer,2048,0))>0)
- Write(Output(),buffer,i)
- ENDWHILE
-
- CloseSocket(sockfd)
- ENDIF
- FreeArgs(rdargs)
- ELSE
- PrintFault(IOErr(),'httpget')
- ENDIF
-
- EXCEPTDO
-
- SELECT exception
- CASE "SOCK"; PrintF('Turn on your TCP/IP stack!\n')
- ENDSELECT
-
- IF SocketBase THEN CloseLibrary(SocketBase)
-
- ENDPROC
-